// 注：此文件的用途是“为与分类相关的接口定义TS数据类型”
// 为所有接口的响应数据中都拥有的属性（字段）（也就是“公共属性”）定义TS类型↓
export interface typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    code: number,
    message: string,
    ok: boolean,
}
// 为接口“获取一级分类”、“获取二级分类”、“获取三级分类”的响应数据中的名为“data”的属性的值（它是一个数组）中的成员对象定义TS类型↓
export interface typeOfObjectAsTheMenberOfTheArrayAsTheValueOfThePropertyNamedDataInTheResponseDataOfInterfaceNamedGetCategory1AndGetCategory2AndGetCategory3 {
    // 注：针对“id”，此处使用了“联合类型”的原因是：在组件中，数据“id”的初始值是“空字符串”，但在“接口的响应数据”中，数据“id”的类型是“数字”↓
    id: number|string,
    name: string,
    // 注：此处使用了“可选属性”的原因是：只有“获取二级分类”的接口的响应数据中，才会有“category1Id”这个属性↓
    category1Id?: number,
    // 注：此处使用了“可选属性”的原因是：只有“获取三级分类”的接口的响应数据中，才会有“category2Id”这个属性↓
    category2Id?: number,
}
// 为“各级分类接口返回的数据”定义TS类型↓
export interface typeOfPropertyNamedDataInTheResponseDataOfAllOfTheApisForGetCategory1AndGetCategory2AndGetCategory3 extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    // data: Array<typeOfObjectAsTheMenberOfTheArrayAsTheValueOfThePropertyNamedDataInTheResponseDataOfInterfaceNamedGetCategory1AndGetCategory2AndGetCategory3>
    data: typeOfObjectAsTheMenberOfTheArrayAsTheValueOfThePropertyNamedDataInTheResponseDataOfInterfaceNamedGetCategory1AndGetCategory2AndGetCategory3[]
}
// 在一级——三级分类被全部选中的情况下，获取到的某个具体的三级分类项下的所有属性及其属性值的TS类型↓
// 为存储了属性值的数组的所在对象定义TS类型↓
export interface typeOfObjectThatStoreAnArrayThatStoreAttributeValue {
    // 注：此处使用了“可选属性”的原因是：只有在“修改已有的属性”时才会有“id”及“attrId”这两个属性（下同）↓
    id?: number,
    valueName: string,
    attrId?: number,
    flag?: boolean, // 通过这个属性的值是真还是假来控制每一个属性值输入框是否应该被展示出来
}
// 为属性值列表（即存储了属性值对象的数组）定义TS类型↓
export type typeOfAttrValueList = typeOfObjectThatStoreAnArrayThatStoreAttributeValue[]
// 为属性对象定义TS类型↓
export interface typeOfObjectThatRepresentsAnAttribute {
    id?: number,
    attrName: string,
    categoryId: string|number,
    categoryLevel: number,
    attrValueList: typeOfAttrValueList,
}
// 为属性列表（即存储了每一个属性对象的数组）定义TS类型↓
export type typeOfAttributeList = typeOfObjectThatRepresentsAnAttribute[]
// 为获取某个具体的三级分类项下的所有属性及其属性值时，接口的响应数据定义TS类型↓
export interface typeOfResponseDataWhenGettingAllOfAttributesAndTheirValuesForASpecificCategory3 extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data:typeOfObjectThatRepresentsAnAttribute[]
}
